// [\u4e00-\u9fa5] 中文验证规则
import wxValidate from 'wechat-validate'

Page({
  behaviors: [wxValidate], // 插件提供了 validate() 方法, 可以在页面实例上直接调用
  // onLoad(query) {
  //   this.setData(query)
  // },
  onLoad({ point, building, room, id }) {
    // 判断是否有 id
    if (id) {
      // 说明当前是在编辑
      // 先回显: 发请求获取数据并渲染
      this.getHouseDetail(id)
    }
    this.setData({ point, building, room })
  },
  async getHouseDetail(id) {
    const { code, data } = await wx.http.get(`/room/${id}`)
    if (code !== 10000) return
    // console.log(data)
    // 最后提交时会报错, 因为 status 不是编辑房屋所需要的参数, 要删除掉
    // 解决方案1: 删除 status, 从源头上解决问题
    delete data.status
    // 解决方案2: 提交数据前, 把 status 解构出来
    this.setData(data)
  },
  data: {
    point: '',
    building: '',
    room: '',
    name: '',
    gender: 1,
    mobile: '',
    idcardFrontUrl: '',
    idcardBackUrl: '',
  },
  rules: {
    name: [
      { required: true, message: '请输入业主姓名' },
      { pattern: /^[\u4e00-\u9fa5]{2,5}$/, message: '请输入2 ~ 5位的汉字' },
    ],
    mobile: [
      { required: true, message: '请输入手机号' },
      { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号' },
    ],
    idcardFrontUrl: [
      { required: true, message: '请上传国徽面' }
    ],
    idcardBackUrl: [
      { required: true, message: '请上传人像面' }
    ]
  },
  async goList() {
    // 先进行表单校验
    if (!this.validate()) return
    // 解构赋值的剩余参数
    const { __webviewId__, ...obj } = this.data
    // 发请求
    const { code } = await wx.http.post('/room', obj)
    if (code !== 10000) return wx.utils.toast('添加房屋失败')
    // 返回到房屋列表
    // delta 返回多少级
    wx.navigateBack({ delta: 4 })
  },
  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    this.setData({ [type]: '' })
  },
  async upload(e) {
    // 区分当前点击的是国徽面还是人像面?
    const type = e.mark.type
    // console.log(type)
    // 打开相册或拍照的 api
    const res = await wx.chooseMedia({
      count: 1, // 选一张
      mediaType: ['image'], // 只能选图片
      sizeType: ['compressed'] // 开启压缩
    })
    // console.log(res.tempFiles[0].tempFilePath)

    // 使用 http 库来上传图片
    const { code, data } = await wx.http.upload('/upload', {
      name: 'file',
      filePath: res.tempFiles[0].tempFilePath
    })
    if (code !== 10000) return wx.utils.toast('图片上传失败')
    // console.log(data)
    // 图片预览
    this.setData({
      [type]: data.url
    })
  }
})
